﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace FlyingCircusWebIS.Models
{
    public class MidiaSocialService: IMidiaSocialService
    {

        IMidiaSocialDAO midiaSocialDAO;

        public MidiaSocialService()
        {
            midiaSocialDAO = new MidiaSocialDAO();
        }

        public MidiaSocial Ler()
        {
            return midiaSocialDAO.Ler();
        }

        public void Atualizar(MidiaSocial entidade)
        {
            midiaSocialDAO.Atualizar(entidade);
        }



        public List<ValidationResult> ValidaAtualizar(MidiaSocial entidade)
        {
            var erros = new List<ValidationResult>();

            bool existeMarcacaoLinkMsgCadastro = entidade.MensagemAtivacaoCadastro.Contains("$$_LINK");
            if (!existeMarcacaoLinkMsgCadastro)
                erros.Add(new ValidationResult( 
                    "Use a marcação $$_LINK para indicar onde será apresentado o link de ativação da mensagem de ativação do cadastro."));

            bool existeMarcacaoClienteMsgCadastro = entidade.MensagemAtivacaoCadastro.Contains("$$_CLIENTE");
            if (!existeMarcacaoClienteMsgCadastro)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_CLIENTE para indicar onde o nome do cliente será apresentado na mensagem de ativação do cadastro."));

            bool existeMarcacaoClienteMsgCancelamento = entidade.MensagemCancelamentoReserva.Contains("$$_CLIENTE");
            if (!existeMarcacaoClienteMsgCancelamento)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_CLIENTE para indicar onde o nome do cliente será apresentado na mensagem de cancelamento de reserva."));

            bool existeMarcacaoCodReservaMsgCancelamento = entidade.MensagemCancelamentoReserva.Contains("$$_CODRESERVA");
            if (!existeMarcacaoCodReservaMsgCancelamento)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_CODRESERVA para indicar onde o código da reserva será apresentado na mensagem de cancelamento de reserva."));

            bool existeMarcacaoDtPartidaMsgCancelamento = entidade.MensagemCancelamentoReserva.Contains("$$_DTPARTIDA");
            if (!existeMarcacaoDtPartidaMsgCancelamento)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_DTPARTIDA para indicar onde a data de partida da reserva será apresentada na mensagem de cancelamento de reserva."));

            bool existeMarcacaoNomeVooMsgConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_NOMEVOO");
            if (!existeMarcacaoNomeVooMsgConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_NOMEVOO para indicar onde o nome do voo será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoAeroportoPartidaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_AEROPARTIDA");
            if (!existeMarcacaoAeroportoPartidaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_AEROPARTIDA para indicar onde o aeroporto de partida será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoCidadePartidaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_CIDADEPARTIDA");
            if (!existeMarcacaoCidadePartidaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_CIDADEPARTIDA para indicar onde a cidade de chegada será apresentada na mensagem de confirmação da reserva."));

            bool existeMarcacaoUFPartidaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_UFPARTIDA");
            if (!existeMarcacaoUFPartidaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_UFPARTIDA para indicar onde a UF de partida será apresentada na mensagem de confirmação da reserva."));

            bool existeMarcacaoAeroportoChegadaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_AEROCHEGADA");
            if (!existeMarcacaoAeroportoChegadaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_AEROCHEGADA para indicar onde o aeroporto de chegada será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoCidadeChegadaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_CIDADECHEGADA");
            if (!existeMarcacaoCidadeChegadaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_CIDADECHEGADA para indicar onde a cidade de chegada será apresentada na mensagem de confirmação da reserva."));

            bool existeMarcacaoUFChegadaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_UFCHEGADA");
            if (!existeMarcacaoUFChegadaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_UFCHEGADA para indicar onde a UF de chegada será apresentada na mensagem de confirmação da reserva."));

            bool existeMarcacaoDataPartidaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_DATAP");
            if (!existeMarcacaoDataPartidaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_DATAP para indicar onde o campo data do horário de partida será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoHoraPartidaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_HORAP");
            if (!existeMarcacaoHoraPartidaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_HORAP para indicar onde o campo horas do horário de partida será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoMinutoPartidaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_MINP");
            if (!existeMarcacaoMinutoPartidaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_MINP para indicar onde o campo minutos do horário de partida do voo será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoDataChegadaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_DATAC");
            if (!existeMarcacaoDataChegadaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_DATAC para indicar onde o campo data da previsão de chegada do voo será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoHoraChegadaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_HORAC");
            if (!existeMarcacaoHoraChegadaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_HORAC para indicar onde o campo horas da previsão de chegada do voo será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoMinutosChegadaConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_MINC");
            if (!existeMarcacaoMinutosChegadaConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_MINC para indicar onde o campo minutos da previsão de chegada do voo será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoDuracaoConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_DURACAO");
            if (!existeMarcacaoDuracaoConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_DURACAO para indicar onde a duração do voo será apresentada na mensagem de confirmação da reserva."));

            bool existeMarcacaoAssentoConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_ASSENTO");
            if (!existeMarcacaoAssentoConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_ASSENTO para indicar onde o número do assento será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoFormaPagamentoConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_FPAGAMENTO");
            if (!existeMarcacaoFormaPagamentoConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_FPAGAMENTO para indicar onde a forma de pagamento será apresentada na mensagem de confirmação da reserva."));

            bool existeMarcacaoCodCupomConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_CODCUPOM");
            if (!existeMarcacaoCodCupomConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_CODCUPOM para indicar onde o código do cupom será apresentado na mensagem de confirmação da reserva."));

            bool existeMarcacaoValorTotalConfirmacao = entidade.MensagemConfirmacaoReserva.Contains("$$_VALORTOTAL");
            if (!existeMarcacaoValorTotalConfirmacao)
                erros.Add(new ValidationResult(
                    "Use a marcação $$_VALORTOTAL para indicar onde o nome do voo será apresentado na mensagem de confirmação da reserva."));

            return erros;
        }
    }
}